package com.weyoung.app.controller;

import com.weyoung.app.dto.req.StatsQueryDTO;
import com.weyoung.app.dto.resp.StatsResultDTO;
import com.weyoung.app.service.StatsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 统计数据控制器
 * 提供访问统计、网络类型统计、设备类型统计的HTTP接口
 */
@RestController
@RequestMapping("/api/stats")
public class StatsController {

    @Autowired
    private StatsService statsService;

    /**
     * 获取访问统计数据
     * 返回指定时间范围内的PV、UV、UIP数据
     *
     * @param queryDTO 查询参数，包含时间范围、用户ID、URL等筛选条件
     * @return 访问统计数据列表，按日期排序
     */
    @GetMapping("/access")
    public List<StatsResultDTO> getAccessStats(StatsQueryDTO queryDTO) {
        return statsService.getAccessStats(queryDTO);
    }

    /**
     * 获取网络类型统计数据
     * 返回不同网络类型（4G/5G/Wi-Fi）的访问分布
     *
     * @param queryDTO 查询参数，包含时间范围、用户ID、URL等筛选条件
     * @return 各网络类型的访问次数统计列表
     */
    @GetMapping("/network")
    public List<StatsResultDTO> getNetworkStats(StatsQueryDTO queryDTO) {
        return statsService.getNetworkStats(queryDTO);
    }

    /**
     * 获取设备类型统计数据
     * 返回不同设备类型（iPhone/Android/iPad）的访问分布
     *
     * @param queryDTO 查询参数，包含时间范围、用户ID、URL等筛选条件
     * @return 各设备类型的访问次数统计列表
     */
    @GetMapping("/device")
    public List<StatsResultDTO> getDeviceStats(StatsQueryDTO queryDTO) {
        return statsService.getDeviceStats(queryDTO);
    }
} 